﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Drawing;
using System.Drawing.Imaging;
using System.Drawing.Drawing2D;
using System.Text;
using System.Security.Cryptography;

public partial class dangky : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        lblThongBaoLoi.Text = "";
        if (!IsPostBack)
        {
            Session["captcha"] = null;
            CreateCaptcha();
        }
    }
    protected void btndangky_Click(object sender, EventArgs e)
    {
        
    }
    protected void btnhuy_Click(object sender, EventArgs e)
    {

    }
    protected void btndangnhap_Click(object sender, EventArgs e)
    {

    }
    protected void btndangky_Click1(object sender, EventArgs e)
    {
        String TenDangNhap = txttaikhoan.Text;
        String MatKhau = txtmatkhau.Text;
        String MatKhauXacNhan = txtmatkhauxacnhan.Text;
        String HoTen = txthoten.Text;
        String DienThoai = txtsodienthoai.Text;
        String DiaChi = txtdiachi.Text;
        String Email = txtemail.Text;
        String MaAnToan = txtantoan.Text;
        if (chbnoiqui.Checked == false)
            lblThongBaoLoi.Text = "! Bạn có đồng ý với nội qui ?";
        else if (TenDangNhap == "" || MatKhau == "" || MatKhauXacNhan == "" || HoTen == ""
          || DienThoai == "" || MaAnToan == "")
            lblThongBaoLoi.Text = "! Nhập đầy đủ các thông tin có dấu (*)";        
        else
        {
            if (MatKhau != MatKhauXacNhan)
                lblThongBaoLoi.Text = "! Mật khẩu xác nhận không đúng.";
            else if (KiemTraDienThoai(DienThoai) == false)
                lblThongBaoLoi.Text = "! Số điện thoại không hợp lệ";
            else if (!txtantoan.Text.Equals(Session["captcha"].ToString(), StringComparison.OrdinalIgnoreCase))
            {
                lblThongBaoLoi.Text = "! Mã xác nhận an toàn không đúng";

            }
            else
            {
                MatKhau = MaHoaMatKhau(MatKhau);
                String sql = "insert into khach_hang(tai_khoan, mat_khau, ho_ten, dien_thoai, email, dia_chi, Tinh_Trang) values('" + TenDangNhap + "', '" + MatKhau + "', '" + HoTen + "', '" + DienThoai + "', '" + Email + "', '" + DiaChi + "', 'Y')";
                ConnectionData cn = new ConnectionData();
                if(cn.ExecuteSQL(sql)==1)
                    Response.Redirect("dangnhap.aspx");
                else
                    Response.Redirect("dangky.aspx");
                
            }
        } 
       
         
    }
    public string MaHoaMatKhau(string password)
    {
        UnicodeEncoding encoding = new UnicodeEncoding();
        Byte[] hashBytes = encoding.GetBytes(password);
        // Compute the SHA-1 hash
        SHA1CryptoServiceProvider sha1 = new SHA1CryptoServiceProvider();
        Byte[] cryptPassword = sha1.ComputeHash(hashBytes);
        return BitConverter.ToString(cryptPassword);
    }
    Boolean KiemTraDienThoai(String DienThoai)
    {
        for (int i = 0; i < DienThoai.Length; i++)
        {
            if (!char.IsNumber(DienThoai[i]))
                return false;
        }
        return true;
    }
    Boolean KiemTraEmailHopLe(String email)
    {
        System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(@"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*");
        Boolean result = regex.IsMatch(email);
        return result;
    }

    private void CreateCaptcha()
    {
        string[] fonts = { "Arial Black", "Lucida Sans Unicode", "Comic Sans MS" };
        const byte LENGTH = 5;
        // chuỗi để lấy các kí tự sẽ sử dụng cho captcha
        const string chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
        using (Bitmap bmp = new Bitmap(140, 35))
        {
            using (Graphics g = Graphics.FromImage(bmp))
            {
                // Tạo nền cho ảnh dạng sóng
                HatchBrush brush = new HatchBrush(HatchStyle.DottedGrid, Color.Orange, Color.Orange);
                g.FillRegion(brush, g.Clip);
                // Lưu chuỗi captcha trong quá trình tạo
                StringBuilder strCaptcha = new StringBuilder();
                Random rand = new Random();
                for (int i = 0; i < LENGTH; i++)
                {
                    // Lấy kí tự ngẫu nhiên từ mảng chars
                    string str = chars[rand.Next(chars.Length)].ToString();
                    strCaptcha.Append(str);

                    // Tạo font với tên font ngẫu nhiên chọn từ mảng fonts
                    Font font = new Font(fonts[rand.Next(fonts.Length)], 14, FontStyle.Bold | FontStyle.Italic);
                    // Lấy kích thước của kí tự
                    SizeF size = g.MeasureString(str, font);
                    // Vẽ kí tự đó ra ảnh tại vị trí tăng dần theo i, vị trí top ngẫu nhiên
                    g.DrawString(str, font, Brushes.Blue, i * size.Width + 3, rand.Next(2, 10));
                    font.Dispose();
                }
                // Lưu captcha vào session
                Session["captcha"] = strCaptcha.ToString();
                // Lưu ảnh vào thư mục captcha với tên ảnh dựa theo IP
                string path = "Captcha/imgcapcha.gif";
                //bmp.Save(Server.MapPath("") + "/" + path, ImageFormat.Gif);
                bmp.Save(Server.MapPath("") + "/" + path, ImageFormat.Gif);
                
                imgCaptcha.ImageUrl = path;
            }
        }
    }
    protected void imbReload_Click(object sender, ImageClickEventArgs e)
    {
        Session["captcha"] = null;
        CreateCaptcha();
        lblThongBaoLoi.Text = "";
        
    }
}